home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / program / jfklib.zip / DLGMETH.CPP < prev    next >
Text File  |  1991-05-10  |  5KB  |  269 lines

  1. /*
  2.     DLGMETH.CPP - Generic DialogBox-Class
  3.     (C) 1991 by Joachim Kainz 'On a mission from Bhudda'
  4. */
  5.     #include "dialog.hpp"
  6.  
  7.     METHOD DIALOG::WMShowWindow (BOOL bShow, long lShow)
  8.     {
  9.         return DefDlgProc(
  10.                     GetWindowHandle (),
  11.                     WM_SHOWWINDOW,
  12.                     bShow,
  13.                     lShow
  14.                );
  15.     }
  16.  
  17.     METHOD DIALOG::WMEraseBkgnd (HANDLE hDC)
  18.     {
  19.         return DefDlgProc(GetWindowHandle (), WM_ERASEBKGND, hDC, NULL);
  20.     }
  21.  
  22.     METHOD DIALOG::WMActivate(
  23.                         WORD wActivate,
  24.                         BOOL bMin,
  25.                         HWND hLast
  26.                      )
  27.     {
  28.         return DefDlgProc(
  29.                     GetWindowHandle (), 
  30.                     WM_ACTIVATE,
  31.                     wActivate,
  32.                     MAKELONG (bMin, hLast)
  33.                );
  34.     }
  35.  
  36.     METHOD DIALOG::WMSetFocus(HWND hLast)
  37.     {
  38.         return DefDlgProc (GetWindowHandle (), WM_SETFOCUS, hLast, NULL);
  39.     }
  40.  
  41.     METHOD DIALOG::WMClose()
  42.     {
  43.         return DefDlgProc(
  44.                     GetWindowHandle (), 
  45.                     WM_CLOSE,
  46.                     NULL,
  47.                     NULL
  48.                );
  49.     }
  50.  
  51.     METHOD DIALOG::WMNCDestroy()
  52.     {
  53.         return DefDlgProc (GetWindowHandle (), WM_NCDESTROY, NULL, NULL);
  54.     }
  55.  
  56.     METHOD DIALOG::WMLButtonDown (WORD wOtherKeys, POINT pt)
  57.     {
  58.         return DefDlgProc (
  59.                     GetWindowHandle (),
  60.                     WM_LBUTTONDOWN,
  61.                     wOtherKeys,
  62.                     *(long *) &pt
  63.                );
  64.     }
  65.  
  66.     METHOD DIALOG::WMNCLButtonDown (WORD wNCHitTest, POINT pt)
  67.     {
  68.         return DefDlgProc (
  69.                     GetWindowHandle (),
  70.                     WM_NCLBUTTONDOWN,
  71.                     wNCHitTest,
  72.                     *  (long*) &pt
  73.                );
  74.     }
  75.  
  76.     METHOD DIALOG::WMGetFont()
  77.     {
  78.         return DefDlgProc (GetWindowHandle (), WM_GETFONT, NULL, NULL);
  79.     }
  80.  
  81.     METHOD DIALOG::WMInitDialog (DWORD dwParam)
  82.     {
  83.         WINDOW::WMCreate (NULL);
  84.  
  85.         msg.AddDlg (GetWindowHandle ());
  86.  
  87.         return TRUE;
  88.     }
  89.  
  90.     void EXPORT DIALOG::EndDialog (WORD wRes)
  91.     {
  92.         wResult = wRes;
  93.  
  94.         DestroyWindow (GetWindowHandle ());
  95.     }
  96.  
  97.     WORD EXPORT DIALOG::modal ()
  98.     {
  99.         HWND hParent = GetParent ();
  100.  
  101.         if (!IsWindowVisible (GetWindowHandle ())) {
  102.  
  103.             ShowWindow  (GetWindowHandle (), SW_SHOW);
  104.             UpdateWindow(GetWindowHandle ()            );
  105.  
  106.         }
  107.  
  108.         if (hParent)
  109.             EnableWindow (hParent, FALSE);
  110.  
  111.         while (GetWindowHandle ())
  112.             msg.Peek ();
  113.  
  114.         if (hParent)  {
  115.  
  116.             EnableWindow (hParent, TRUE);
  117.             SetFocus     (hParent       );
  118.  
  119.         }
  120.  
  121.         return GetResult ();
  122.     }
  123.  
  124.     void EXPORT DIALOG::SetItemText (WORD wItem, LPSTR lpText)
  125.     {
  126.         HWND hCtl = GetDlgItem (GetWindowHandle (), wItem);
  127.  
  128.         if (HIWORD (lpText)) {
  129.  
  130.             SetWindowText (hCtl, lpText);
  131.  
  132.             return;
  133.  
  134.         }
  135.  
  136.         WORD wMaxLen = 64;
  137.  
  138.         while (TRUE) {
  139.  
  140.             PSTR pText = new char [wMaxLen];
  141.  
  142.             if (!pText)
  143.                 return;
  144.  
  145.             WORD wLen = LoadString (
  146.                             GetInstance (),
  147.                             LOWORD (lpText),
  148.                             pText,
  149.                             wMaxLen
  150.                         );
  151.  
  152.             if (wLen+1 >= wMaxLen) {
  153.  
  154.                 wMaxLen *= 2;
  155.                 continue;
  156.  
  157.             }
  158.  
  159.             SetWindowText (hCtl, pText);
  160.  
  161.             return;
  162.         }
  163.  
  164.     }
  165.  
  166.     METHOD DIALOG::WMDestroy ()
  167.     {
  168.         msg.RemoveDlg (GetWindowHandle ());
  169.  
  170.         return WINDOW::WMDestroy ();
  171.     }
  172.  
  173.     void EXPORT DIALOG::LimitText (WORD wItem, WORD  wChars)
  174.     {
  175.         SendDlgItemMessage (
  176.             GetWindowHandle (),
  177.             wItem,
  178.             EM_LIMITTEXT,
  179.             wChars,
  180.             0l
  181.         );
  182.     }
  183.  
  184.     void EXPORT DIALOG::GetItemText (WORD wItem, LPSTR lpText, WORD wText)
  185.     {
  186.         HWND hCtl = GetDlgItem (GetWindowHandle (), wItem);
  187.  
  188.         if (!hCtl) {
  189.  
  190.             *lpText = '\0';
  191.             return;
  192.  
  193.         }
  194.  
  195.         GetWindowText (hCtl, lpText, wText);
  196.     }
  197.  
  198.     void EXPORT DIALOG::EnableItem (WORD wItem, BOOL bEnable)
  199.     {
  200.         HWND hCtl = GetDlgItem (GetWindowHandle (), wItem);
  201.  
  202.         EnableWindow (hCtl, bEnable);
  203.     }
  204.  
  205.     METHOD DIALOG::WndDlgProc (WORD wMsg, WORD wParam, long lParam)
  206.     {
  207.         switch (wMsg) {
  208.  
  209.           case WM_COMMAND:
  210.             return WMCommand (
  211.                         wParam,
  212.                         HIWORD (lParam),
  213.                         LOWORD (lParam)
  214.                    );
  215.  
  216.           case WM_SYSCOMMAND:
  217.             return WMSysCommand (wParam, MAKEPOINT (lParam));
  218.  
  219.           case WM_TIMER:
  220.             return WMTimer (wParam, (FARPROC) lParam);
  221.  
  222.           case WM_HSCROLL:
  223.             return WMHScroll (wParam, HIWORD (lParam));
  224.  
  225.           case WM_VSCROLL:
  226.             return WMVScroll (wParam, HIWORD (lParam));
  227.  
  228.           case WM_INITMENU:
  229.             return WMInitMenu (wParam);
  230.  
  231.           case WM_INITDIALOG:
  232.             return WMInitDialog (lParam);
  233.  
  234.           case WM_INITMENUPOPUP:
  235.             return WMInitMenuPopUp    (
  236.                         wParam,
  237.                         LOWORD (lParam),
  238.                         HIWORD (lParam)
  239.                      );
  240.  
  241.           case WM_MENUSELECT:
  242.             return WMMenuSelect (wParam, LOWORD (lParam));
  243.  
  244.           case WM_MENUCHAR:
  245.             return WMMenuChar (
  246.                         wParam,
  247.                         HIWORD (lParam),
  248.                         LOWORD (lParam)
  249.                    );
  250.  
  251.           case WM_ENTERIDLE:
  252.             return WMEnterIdle (wParam, LOWORD (lParam));
  253.  
  254.         }
  255.  
  256.         return DefWindowProc (GetWindowHandle (), wMsg, wParam, lParam);
  257.     }
  258.  
  259.     METHOD DIALOG::WMSysCommand (WORD wID, POINT pt)
  260.     {
  261.         return DefWindowProc (
  262.                 GetWindowHandle (),
  263.                 WM_SYSCOMMAND,
  264.                 wID,
  265.                 *(long*)&pt
  266.                );
  267.     }
  268.  
  269.